# 30. 模块的初始
# 什么是模块
模块:由很多方法或类或函数集合形成的一个.py文件或一个文件夹或c语言编译好的一些编译文件
Python解释器本身就不会带有太多的功能,有很多的功能都放在内置模块中,但是内置模块的功能也是有限,那么外部大神就自己开发一些模块放在网上供大家使用,需要的时候在安装调用
那为什么要用模块
- 有一些功能开发者无法独立开发,这时就需要别人写好的模块,来完成这些功能
- 实现一些Python本身自带的函数或方法无法实现的功能
- 比如和操作系统交互
- 和时间交互
- 取相对应的随机数
- 跟网络通信交互
- 等等等
那为什么要有模块
- 方便开发者分类管理
- 可以有效的节省内存
- 提供更多的功能
# 模块的分类
模块分为:内置模块、第三方模块/扩展模块、自定义模块
内置模块
- 是由Python解释器自带的模块
- 不用安装,直接引用就可以直接使用
第三方模块/扩展模块
- 由一些大神开发出的模块
- 需要安装后才可以使用
自定义模块
- 可以自己定义一些模块
- 一个文件夹或一个.py文件就可以当成一个模块使用
# 模块名和模块使用规范
模块名规范跟变量名规范一样,但是要注意一点:模块名是由小写字母开头的,不会以大写字母开头
模块使用的 PEP8 规范
- 一个import只能导入一个模块,虽然python支持导入多个模块,但是PEP8规定一个import只能导入一个模块
- 所有的模块导入都要放在文件的开头处
- 模块的导入顺序
- 内置模块
- 第三方模块
- 自定义模块
强烈建议:按照PEP8规范来使用模块,尽量让自身的代码规范化
# 模块的初用
用自定义模块来入门
模块文件
用一个.py文件来当模块
print("这是一个自定义模块中的打印输出")
name = "这是一个自定义模块中的变量"
def inso():
print("这是一个自定义模块中的函数")
模块的导入跟使用
import so_msg ## .py模块文件导入不需要写.py
print(so_msg.name)
so_msg.inso()
执行结果:
这是一个自定义模块中的打印输出
这是一个自定义模块中的变量
这是一个自定义模块中的函数
# 模块更名
模块导入的时候更改名称,但是更改不是模块文件名,而是在当前内存空间的这个模块的变量名
import so_msg as s ## 将so_msg 更改成 s
print(s.name)
s.inso()
执行结果:
这是一个自定义模块中的打印输出
这是一个自定义模块中的变量
这是一个自定义模块中的函数
# 使用模块时的执行顺序
当python执行代码到 import 时
- 一般变量是不是先执行右边的,右边执行完在把结果赋值给左边的变量名,模块也是一样
- import os 时,生成一个空间,将os对应的py文件,中相对应对象写入这个空间中
- 在把这个空间内存地址保存在当前的py文件空间中,保存名就是模块名
- 模块导入后,模块名 == 变量,就可以直接拿模块名来使用
- 在更改模块名的时候(import os as s),实际是把当前内存空间的os变量名改成s